function Read-FileByte {
################################################################
#.Synopsis
# Returns an array of System.Byte[] of the file contents.
#.Parameter Path
# Path to the file as a string or as System.IO.FileInfo object.
# FileInfo object can be piped into the function. Path as a
# string can be relative or absolute, but cannot be piped.
################################################################
[CmdletBinding()] Param (
 [Parameter(Mandatory = $True, ValueFromPipelineByPropertyName = $True)]
 [Alias("FullName","FilePath")]
 $Path
)
[System.IO.File]::ReadAllBytes( $(resolve-path $Path) )
}

$i = 1;
Write-Host ('0000: ') -nonewline
foreach ($b in (Read-FileByte $args[0])) {
  if ($b -eq 0) {
    Write-Host ($b.toString('000') + ' ') -nonewline -BackgroundColor Magenta
  }
  else {
    Write-Host ($b.toString('000') + ' ') -nonewline
  }
  if (($i % 25) -eq 0) {
    Write-Host (': ' + $i.toString('0000'))
    Write-Host ($i.toString('0000') + ': ') -nonewline
  }
  if ($i -eq $args[1]) { break }
  $i += 1
}
Write-Host 